home *** CD-ROM | disk | FTP | other *** search
/ MacHack 1997 / MacHack 1997.toast / Presentations / Presentations ’97 / Sessions ’97 / Multiplatform Code⁄Data Sharing / HelloBothWorlds / GE / LibHdr / clipmgr.h next >
Encoding:
C/C++ Source or Header  |  1996-03-15  |  2.2 KB  |  70 lines  |  [TEXT/CWIE]

  1. /*
  2.     ClipMgr.h
  3.     
  4.     Clipping region management routines for Graphic Elements
  5.     
  6.     Copyright 1993-1995 by Al Evans and Pat Maupin. All rights reserved.
  7.     
  8.     Written 4/10/95
  9. */
  10.  
  11. #ifndef CLIPMGR
  12. #define CLIPMGR
  13.  
  14. #include "Defs.h"
  15.  
  16. /*
  17.     RecalcClipRegion dynamically builds a clipping region by combining
  18.     two separately maintained regions with the animation rectangle:
  19.  
  20.       clipRgn = animationRect - userCovered - otherWorldsCover
  21.  
  22.     It handles either or both of these covering regions being null,
  23.     and handles differences between PCs and MACs -- on PCs, the clip
  24.     region is relative to the enclosing window, whereas on MACs the
  25.     clip region is relative to the viewport (the world's focus rectangle).
  26.  
  27.     If it cannot allocate a temporary region for its work, it will
  28.     fail softly by failing to provide any clipping.
  29. */
  30.  
  31. GE_CALLBACK(void,RecalcClipRegion)(GEWorldPtr world);
  32.  
  33. /*
  34.     PutWorldOnTop maintains a world list in Z-order.  It can be
  35.     called whenever a world is moved or otherwise receives the
  36.     focus.
  37.  
  38.     PutWorldOnTop moves a world to the top of its worldlist,
  39.     and recalculates the clip region for that world, and all other
  40.     worlds in the worldlist which share the same grafPort.
  41.  
  42.     Each world is clipped by a user specified exclusion region,
  43.     plus a computed exclusion region which is the union of the
  44.     visible regions of all worlds above it.
  45. */
  46.  
  47. GE_CALLBACK(void,PutWorldOnTop)(GEWorldPtr topWorld);
  48.  
  49. /*
  50.     CoverRegion/CoverRect/UncoverRegion/UncoverRect may be called
  51.     by user code to define an exclusion area for a world.  Note that
  52.     this exclusion area ONLY applies to the given world.  This allows
  53.     the technique to be used to let a lower world "bleed through" a
  54.     world above it in certain areas.
  55. */
  56.  
  57. GE_CALLBACK(void,CoverRegion)(GEWorldPtr world, RgnHandle coveredRgn);
  58. GE_CALLBACK(void,UncoverRegion)(GEWorldPtr world, RgnHandle rgnToUncover);
  59. GE_CALLBACK(void,CoverRect)(GEWorldPtr world, Rect *coveredRect);
  60. GE_CALLBACK(void,UncoverRect)(GEWorldPtr world, Rect *rectToUncover);
  61.  
  62. /*
  63.    UncoverWorld removes any user-defined cover from the world,
  64.    places the world at the top of the Z-order, and causes the
  65.    entire world to be redisplayed on the next update.
  66. */
  67. GE_CALLBACK(void,UncoverWorld)(GEWorldPtr world);
  68.  
  69. #endif
  70.